package com.igoal.dao;

import java.util.Date;
import java.util.List;

import com.igoal.entity.ActionTypeEnum;
import com.igoal.entity.ComponentEnum;
import com.igoal.entity.User;
import com.igoal.entity.UserActivity;

public interface UserActivityDAO extends GenericDao<UserActivity, Long> {
	List<UserActivity> listNotificationsLog(User componentOwner,
			User actionOwner, List<ActionTypeEnum> actions,
			List<ComponentEnum> components, String orderProperty,
			Object lastOrderPropertyValue, int numberOfRecord, boolean before);

	List<UserActivity> listActivities(List<User> ignoreComponentOwners,
			List<User> actionOwners, List<ActionTypeEnum> actions,
			List<ComponentEnum> components, String orderProperty,
			Object lastOrderPropertyValue, int numberOfRecord, boolean before);

	int countNewNotificationLog(User componentOwner, User actionOwner,
			List<ActionTypeEnum> actions, List<ComponentEnum> components);

	void markReadNotificationLog(User owner);

	List<UserActivity> getWallActivities(User requestUser, User wallOwner,
			List<ComponentEnum> components, Date updateBefore);
}
